﻿#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

typedef char TRType;
typedef struct BinaryTree
{
	TRType data;
	struct BinaryTree* left;
	struct BinaryTree* right;

}Tree;

//前序遍历
void FrontOrder(Tree* root);
//中序遍历
void InOrder(Tree* root);
//后序遍历
void BackOrder(Tree* root);

// 二叉树节点个数
int BinaryTreeSize(Tree* root);
// 二叉树叶子节点个数
int BinaryTreeLeafSize(Tree* root);
// 二叉树第k层节点个数
int BinaryTreeLevelKSize(Tree* root, int k);
// 二叉树查找值为x的节点
Tree* BinaryTreeFind(Tree* root, TRType x);
//⼆叉树的深度/⾼度
int BinaryTreeDepth(Tree* root);
// 层序遍历
void BinaryTreeLevelOrder(Tree* root);
// 判断二叉树是否是完全二叉树
int BinaryTreeComplete(Tree* root);

